package prime

const testVersion = 2

func Factors(input int64) []int64 {
	if input == int64(1) {
		return []int64{}
	}

	var factors []int64

	divisor := input
	for {
		for i := int64(2); i <= divisor; i++ {
			if divisor%i == 0 {
				factors = append(factors, i)
				divisor = divisor / i
				break
			}
		}

		if divisor == int64(1) {
			break
		}
	}

	return factors
}

// 这段代码其实我觉得更优美，但是运行效率其实没有上面那个高。
// func Factors(factorise int64) []int64 {
// 	factors := make([]int64, 0)

// 	for i := int64(2); i <= factorise; i++ {
// 		if factorise%i == 0 {
// 			factors = append(factors, i)
// 			factorise /= i
// 			i = int64(1)
// 		}
// 	}
// 	return factors
// }
